# -*- coding: utf-8 -*-
# frontend/pages/chat.py
"""
聊天页面
"""

import streamlit as st
from frontend.components.chat_interface import ChatInterface
from frontend.components.model_selector import render_model_selector
import asyncio

def render_chat_page():
    """渲染聊天页面"""
    
    # 创建聊天界面实例
    chat_interface = ChatInterface()
    
    # 页面布局
    tab1, tab2 = st.tabs(["💬 对话", "🤖 模型设置"])
    
    with tab1:
        # 主聊天区域
        chat_container = st.container()
        
        with chat_container:
            # 显示聊天历史
            chat_interface.render_chat_history()
            
            # 添加间隔
            st.markdown("<br>" * 2, unsafe_allow_html=True)
            
            # 输入区域
            chat_interface.render_input_area()
    
    with tab2:
        # 模型选择和配置
        st.markdown("### 🎯 AI模型配置")
        
        # 模型选择器 - 使用侧边栏中已选择的模型
        selected_models = st.session_state.get("selected_models", [])
        
        # 显示当前选择的模型
        if selected_models:
            st.write("当前选择的模型：")
            for model in selected_models:
                st.write(f"- {model}")
        else:
            st.info("请在侧边栏中选择至少一个AI模型")
        
        st.markdown("---")
        
        # 高级设置
        st.markdown("### ⚙️ 高级设置")
        
        col1, col2 = st.columns(2)
        
        with col1:
            temperature = st.slider(
                "创意度 (Temperature)",
                min_value=0.0,
                max_value=2.0,
                value=st.session_state.get("temperature", 0.7),
                step=0.1,
                help="控制AI回答的创意程度，0表示很确定，2表示很有创意"
            )
            st.session_state.temperature = temperature
            
            max_tokens = st.number_input(
                "最大回答长度",
                min_value=100,
                max_value=4000,
                value=st.session_state.get("max_tokens", 2000),
                step=100,
                help="限制AI回答的最大长度"
            )
            st.session_state.max_tokens = max_tokens
        
        with col2:
            stream_response = st.checkbox(
                "流式输出",
                value=st.session_state.get("stream_response", True),
                help="实时显示AI的回答过程"
            )
            st.session_state.stream_response = stream_response
            
            save_conversation = st.checkbox(
                "自动保存对话",
                value=st.session_state.get("auto_save", True),
                help="自动保存对话记录"
            )
            st.session_state.auto_save = save_conversation
        
        # 预设提示模板
        st.markdown("---")
        st.markdown("### 📝 预设提示模板")
        
        templates = {
            "代码助手": "你是一个专业的程序员助手，请用清晰简洁的方式回答编程问题，并提供可运行的代码示例。",
            "写作助手": "你是一个专业的写作助手，请帮助用户改进文本，提供创意和结构建议。",
            "学习导师": "你是一个耐心的学习导师，请用通俗易懂的方式解释复杂概念，并提供学习建议。",
            "商务顾问": "你是一个经验丰富的商务顾问，请提供专业的商业分析和建议。"
        }
        
        selected_template = st.selectbox(
            "选择预设角色",
            ["无"] + list(templates.keys()),
            help="选择一个预设角色来优化AI的回答风格"
        )
        
        if selected_template != "无":
            st.info(f"🎭 当前角色: {selected_template}")
            st.markdown(f"**角色描述**: {templates[selected_template]}")
            st.session_state.system_prompt = templates[selected_template]
        else:
            st.session_state.system_prompt = ""
